.model small

;
; exports global common variables
;
public data1
public data2
public green, yellow, red, off
public south, north, east, west
public left, forward, right
public semaphores 
;
; exports global common functions
;
public readc
public printc

south equ 0
east equ 1
north equ 2
west equ 3
left equ 0
forward equ 1
right equ 2
off equ 0
red equ 1
yellow equ 2
green equ 3

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; data segment
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.data 
	data1 db ?
	data2 db ?
	semaphores db 12 dup (?)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; code segment
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.code

;
; read one character
; before calling readc proc free the space one stack
;
readc proc
	push bp
	mov bp, sp
	push ax
	
	mov ah, 1
	int 21h
	
	mov ah, 0
	mov [bp+4], ax
	
	pop ax
	pop bp
	ret
readc endp

;
; print one character
;
printc proc near
	push bp
	mov bp, sp
	push ax
	push dx
	
	mov ax, [bp+4]
	mov dl, al
	mov ah, 2
	int 21h
	
	pop dx
	pop ax
	pop bp
	ret
printc endp

end
